const multer = require('multer');

const path = require("path");

const sd = require("silly-datetime");

const { mkdirp } = require("mkdirp");

const md5 = require("md5");

let tools = {
    // ES6的方法简写
    multer() {
        // 设置上传文件的存储方式 这里使用了diskStorage来指定存储目录和文件名
        const storage = multer.diskStorage({
            // 设置文件存储目录
            // 注意：如果目录不存在，multer会自动创建目录
            destination: async (req, file, cb) => {
                // 1. 获取当前日期
                const day = sd.format(new Date(), "YYYYMMDD");
                let dir = path.join("static/upload", day);
                // 2. 按照日期生成图片存储目录
                await mkdirp(dir) // 确保目录存在，如果不存在则创建
                // 注意：mkdirp会自动创建多级目录，如果目录已经存在，则不会报错

                // 3. 调用回调函数，传入目录路径
                cb(null, dir) // 这里可以修改为你想要的目录，例如：'static/upload'
                // 注意：如果使用了相对路径，目录必须存在，否则会报错
            },
            // 设置文件名
            // 注意：如果不设置文件名，multer会自动生成一个随机的文件
            filename: function (req, file, cb) {
                // 获取文件的扩展名
                const extname = path.extname(file.originalname); // 获取文件的扩展名
                // 设置文件名为：原始文件名-时间戳.扩展名
                // 例如：file-1634567890123.jpg
                cb(null, `${Date.now()}${extname}`); // 这里可以修改为你想要的文件名格式
            }
        })
        const upload = multer({ storage: storage })
        return upload;
    },
    md5(str) {
        return md5(str);
    },
    getUnix() {
        const d = new Date();
        return d.getTime();
    },
    formatTime(unixStr) {
        let day = sd.format(new Date(unixStr), "YYYY-MM-DD");
        return day;
    },
    unixToDay(unixStr){
        let day=sd.format(unixStr, 'DD');
        return day
    },
    unixToYearAndMonth(unixStr){
        let day=sd.format(unixStr, 'YYYY-MM');
        return day
    }
}

module.exports = tools;